import { getStudentUpcomingCheckin, getStudentCoursesWithStats, studentSignin, joinClass } from '../../api/api';

Page({
    data: {
        hasFaceRegistered: false, // 是否已注册人脸
        showFaceRegisterModal: false, // 是否显示人脸注册提示弹窗
        upcomingCheckins: [], // 即将开始的签到
        courses: [], // 学生的课程列表
        showJoinClassModal: false, // 是否显示加入班级弹窗
        classCode: '' // 班级编码
    },

    onLoad: function() {
        this.checkFaceRegistration();
        this.loadUpcomingCheckins();
        this.loadStudentCourses();
    },

    onShow: function() {
        // 每次页面显示时更新数据
        this.checkFaceRegistration();
        this.loadUpcomingCheckins();
    },

    // 检查学生是否已注册人脸
    checkFaceRegistration: function() {
        // 模拟数据，实际应该从服务器获取
        const hasFaceRegistered = wx.getStorageSync('hasFaceRegistered') || false;
        this.setData({
            hasFaceRegistered: hasFaceRegistered
        });
    },

    // 加载即将开始的签到
    loadUpcomingCheckins: function() {
        // 获取当前登录的学生信息
        const userInfo = wx.getStorageSync('userInfo');
        if (!userInfo || !userInfo.userId) {
            console.error('未获取到用户信息');
            return;
        }

        wx.showLoading({
            title: '加载中...',
        });

        // 调用API获取学生最近需要签到的信息
        getStudentUpcomingCheckin(userInfo.userId)
            .then(res => {
                wx.hideLoading();
                if (res.data) {
                    // 有待签到信息，设置到列表中
                    this.setData({
                        upcomingCheckins: [res.data],
                    });
                } else {
                    // 没有待签到信息，设置空数组
                    this.setData({
                        upcomingCheckins: [],
                    });
                }
            })
            .catch(err => {
                wx.hideLoading();
                console.error('获取签到信息失败:', err);
                wx.showToast({
                    title: '获取签到信息失败',
                    icon: 'none'
                });
                // 设置空数组
                this.setData({
                    upcomingCheckins: []
                });
            });
    },

    // 加载学生课程
    loadStudentCourses: function() {
        // 获取当前登录的学生信息
        const userInfo = wx.getStorageSync('userInfo');
        if (!userInfo || !userInfo.userId) {
            console.error('未获取到用户信息');
            return;
        }

        wx.showLoading({
            title: '加载课程中...',
        });

        // 调用API获取学生课程列表及签到统计信息
        getStudentCoursesWithStats(userInfo.userId)
            .then(res => {
                wx.hideLoading();
                if (res.data && Array.isArray(res.data)) {
                    this.setData({
                        courses: res.data
                    });
                    console.log(this.data.courses)
                } else {
                    this.setData({
                        courses: []
                    });
                    console.warn('未获取到课程数据或数据格式不正确');
                }
            })
            .catch(err => {
                wx.hideLoading();
                console.error('获取课程列表失败:', err);
                wx.showToast({
                    title: '获取课程列表失败',
                    icon: 'none'
                });
                // 设置空数组
                this.setData({
                    courses: []
                });
            });
    },

    // 执行签到操作
    doCheckin: function(e) {
        const checkin = this.data.upcomingCheckins[0];
        // 获取userinfo
        const userInfo = wx.getStorageSync("userInfo");
        // 如果 userInfo.imageUrl 为空或者为空字符串 则需要注册人脸
        if (!userInfo.imageUrl || userInfo.imageUrl === "") {
            // 如果未注册人脸信息，显示提示弹窗
            this.setData({
                showFaceRegisterModal: true,
            });
            return;
        }
        // 直接调用签到接口进行签到 先判断是否过了签到时间
        // 获取当前时间
        const currentTime = new Date();
        // 获取签到开始时间
        const checkinStartTime = new Date(checkin.startTime);
        // 判断是否过了签到时间
        if (currentTime > checkinStartTime) {
            wx.showToast({
                title: '签到时间已过',
                icon: 'none'
            });
            return;
        }

        // 调用签到接口
        studentSignin(userInfo.userId, checkin.id)
            .then(res => {
                wx.showToast({
                    title: res.data,
                    icon: 'success',
                    duration: 1500
                });

                setTimeout(() => {
                    this.loadUpcomingCheckins();
                }, 1500);
            })
            .catch(err => {
                console.error('签到失败:', err);
                wx.showToast({
                    title: err.message || '签到失败',
                    icon: 'none'
                });
            });

        // 进入签到流程，跳转到签到页面
        // wx.navigateTo({
        //     url: `/pages/student_checkin/student_checkin?id=${checkinId}`,
        // });
    },

    // 查看课程签到详情
    viewCourseCheckins: function(e) {
        // 将当前点击的课程信息都存储起来
        wx.setStorageSync('courseInfo', e.currentTarget.dataset.item);
        wx.navigateTo({
            url: `/pages/student_course_checkin/student_course_checkin`
        });
    },

    // 关闭人脸注册提示弹窗
    closeFaceModal: function() {
        this.setData({
            showFaceRegisterModal: false
        });
    },

    // 前往人脸注册页面
    goToFaceRegister: function() {
        wx.navigateTo({
            url: '/pages/face_register/face_register'
        });
        this.setData({
            showFaceRegisterModal: false
        });
    },

    // 显示加入班级弹窗
    showJoinClassModal: function() {
        this.setData({
            showJoinClassModal: true,
            classCode: ''
        });
    },

    // 关闭加入班级弹窗
    closeJoinClassModal: function() {
        this.setData({
            showJoinClassModal: false
        });
    },

    // 加入班级
    joinClass: function() {
        const classCode = this.data.classCode;
        if (!classCode || classCode.trim() === '') {
            wx.showToast({
                title: '请输入班级编码',
                icon: 'none'
            });
            return;
        }

        // 获取当前登录的学生信息
        const userInfo = wx.getStorageSync('userInfo');
        if (!userInfo || !userInfo.userId) {
            console.error('未获取到用户信息');
            wx.showToast({
                title: '未获取到用户信息',
                icon: 'none'
            });
            return;
        }

        // 显示加载中
        wx.showLoading({
            title: '正在加入班级...',
        });

        // 调用加入班级API
        joinClass(userInfo.userId, classCode.trim())
            .then(res => {
                wx.hideLoading();
                wx.showToast({
                    title: '加入班级成功',
                    icon: 'success',
                    duration: 2000
                });
                this.setData({
                    showJoinClassModal: false
                });
                // 重新加载课程列表
                setTimeout(() => {
                    this.loadStudentCourses();
                }, 1000);
            })
            .catch(err => {
                wx.hideLoading();
                console.error('加入班级失败:', err);
                wx.showToast({
                    title: err.message || '加入班级失败',
                    icon: 'none',
                    duration: 2000
                });
            });
    }
});